Advances in technology have resulted in smaller and more powerful computing devices. For example, there currently exist a variety of portable computing devices, including wireless computing devices such as wireless telephones, personal digital assistants (PDAs), and tablet computers that are small, lightweight, and easily carried by users. In order to simplify user interfaces and to avoid pushbuttons and complex menu systems, such portable computing devices may use touch screen displays that detect user gestures on the touch screen and translate the detected gestures into commands to be performed by the device. Such gestures may be performed using one or more fingers or a stylus type pointing implement. Multi-touch screens (touch screens having multi-touch capability) are designed to recognize and track several simultaneous touches. For example, when a user moves two fingers on a screen, information indicating touch/movement for both fingers is provided by a multi-touch screen.
One drawback of implementing multi-touch technology on portable computing devices is the processing overhead typically required for recognizing multi-touch gestures by a user. Processing overhead measures the total amount of work the central processing unit (CPU) of the device can perform and the percentage of that total capacity which is used by individual computing tasks, such as touch detection. In total, these tasks should require less than the CPU's overall capacity, or the processor becomes overloaded. Simple touch coordinates detection may typically be handled by a touch screen controller (TSC), which is a separate processor associated with the touch screen, but more complex touch gestures interpretation usually requires the use of a secondary processor running the operating system, often the mobile device's CPU. As the number of fingers or touch contacts increases, the processing overhead required for multi-touch detection and recognition may require a large percentage of the overall CPU capacity, impairing device performance.
The current generation of mobile computing devices is not well adapted to deal with increasing touch complexity and corresponding CPU overheads, especially in conjunction with the many other common high performance use cases. At the heart of most mobile devices is a baseband (BB) or an applications processor (AP) responsible for running an operating system and a variety of applications, as well as lower level software drivers. Increasing the size of the mobile processor core or cache delivers performance increases only up to a certain level beyond which heat dissipation issues make any further increase in core and cache size impractical. Overall processing capacity is further limited by the smaller size of many mobile devices, which limits the number of processors that can be included in the device. Additionally, because mobile computing devices are generally battery-powered, high performance use also shortens battery life.
Despite mobile processing limitations, many common mobile applications such as maps, games, email clients, web browsers, etc., are making increasingly complex use of touch recognition. Further, touch processing complexity increases proportional to touch-node capacity, which in turn increases proportional to display size. Capacitive touch screen displays are trending towards higher display sizes (10.1 to 17 inches). Additionally, multi-touch use cases involving up to 10 fingers and/or a pen or stylus also require higher responsiveness and improved performance from the touch screen device. Therefore, because there is a trend in many portable computing devices toward increasing display size and touch complexity, touch processing is increasingly reducing device performance and threatening battery life. Further, user interaction with a device through touch events is highly sensitive to latency, and user experience can suffer from low throughput interfaces between the touch screen panel and the host processor resulting in processing delay and response lag.
Current stand-alone touch screen controllers lack scalability in terms of digital processing and memory for supporting multi-touch use cases and algorithms. However, sending touch sensor raw data to the application processor or host for digital processing results in high standby power consumption and high interface bandwidth.
Conventional touch screen controllers incorporate an analog front end and a digital core. The analog front end performs sensing and acquisition of touch sensor data and sends this raw data to a digital core that performs noise reduction, image forming, touch validation and contact identification and tracking functions. This increases the memory and processing demand on the touch screen controllers. Existing solutions have moved many of the functions to the application processor or host while leaving the analog front end to perform relatively “dumb” functions such as sensing and acquisition of touch sensor data. This solution, however, requires a continuous flow of raw data to the host which increases standby power consumption. This solution also requires high interface bandwidth or pin counts due to the large amount of raw data continuously flowing from the analog front end to the application processor over the interface.